/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * deleteRes.java
 *
 * Created on 19 Φεβ 2012, 3:13:21 μμ
 */
package handax.GUI;

import handax.controller.DBManager;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Μιχάλης
 */
public class deleteRes extends javax.swing.JFrame {

    //αναφορά τύπου Admin
    private Admin root;
    
    //Δημιουργία DBManager για επικοινωνία με την βάση
    DBManager db=new DBManager();
    
    /** Creates new form deleteRes */
    public deleteRes() {
        initComponents();
        
        //απενεργοποίηση κουμπιού εισαγωγής
        importButton.setEnabled(false);
        
        //απενεργοποίηση κουμπιού τροποποίησης
        modifyButton.setEnabled(false);
        
        //απενεργοποίηση κουμπιού διαγραφής
        deleteButton.setEnabled(false);
        
        //εκτέλεση της insertRows() για
        //να εμφανιστεί ο πίνακας με τα διαθέσιμα
        //εστιατόρια προς διαγραφή
        insertRows();
    }
    
    //μέθοδος για να ορίσουμε το αρχικό παράθυρο
    public void setRoot(Admin root){
        this.root=root;
    }

    //μέθοδος όπου εμφανίζει τα διαθέσιμα εστιατόρια
    //στον πίνακα
    public void insertRows(){
     
        try{
            
                //ορισμός ενός μοντέλου τύπου DefaultTableModel
                //το οποίο δεν είναι editable
                DefaultTableModel model=new DefaultTableModel(){
                        
                        @Override
                        public boolean isCellEditable(int row, int column) {
                        //όλα τα κελιά μη-επεξεργάσιμα
                        return false;
                        }
                };
                
                //Συσχέτιση αυτού του μοντέλου με τον πίνακα
                jTable1.setModel(model);
                 //Ορισμός ενός Vector με Strings για αποθήκευση των ονομασιών
                 //των εστιατορίων
                 Vector<String> names=new Vector<String>();
                 //Ορισμός ενός Vector με Strings για αποθήκευση των διευθύνσεφν
                 //των εστιατορίων
                 Vector<String> address=new Vector<String>();
                 //Ορισμός ενός Vector με Strings για αποθήκευση των περιοχών
                 //των εστιατορίων   
                 Vector<String> areas=new Vector<String>();
                 //Ορισμός ενός Vector με Strings για αποθήκευση των τηλεφώνων
                 //των εστιατορίων
                 Vector<String> phones=new Vector<String>();
                //Ορισμός ενός Vector με Strings για αποθήκευση των κατηγοριών
                 //των εστιατορίων
                 Vector<String> cat=new Vector<String>();
        
        //επανάληψη για να προστεθούν τα στοιχεία όλων των εστιατορίων 
        //στους αντίστοιχους vectors
        for(int i=0;i<db.retrieveAllRests().size();i++){
        
                //προσθήκη των ονομασιών στον Vector για τις ονομασίες
                names.add(db.retrieveAllRests().get(i).getRestName());
                
                //προσθήκη των διευθύνσεων στον Vector για τις διευθύνσεις
                address.add(db.retrieveAllRests().get(i).getAddress());
                
                //προσθήκη των περιοχών στον Vector για τις περιοχές
                areas.add(db.retrieveArea(db.retrieveAllRests().get(i).getArea()).getDescr());
                
                //προσθήκη των τηλεφώνων στον Vector για τις διευθύνσεις
                phones.add(db.retrieveAllRests().get(i).getPhone());
                
                //προσθήκη των κατηγοριών στον  Vector για τις κατηγορίες
                cat.add(db.retrieveCategory(db.retrieveAllRests().get(i).getCategory()).getDescr());
        
        
        
        }   
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Ονομασία και με δεδομένα
        //τα ονόματα του Vector names
        model.addColumn("Ονομασία",names);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Διεύθυνση και με δεδομένα
        //τις διευθύνσεις του Vector address
        model.addColumn("Διεύθυνση",address);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Περιοχή και με δεδομένα
        //τις περιοχές του Vector areas
        model.addColumn("Περιοχή",areas);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Τηλέφωνο και με δεδομένα
        //τα τηλέφωνα του Vector phones
        model.addColumn("Τηλέφωνο",phones);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Κατηγορία και με δεδομένα
        //τις κατηγορίες του Vector cat
        model.addColumn("Κατηγορία",cat);
        
        }catch (NullPointerException ex){
            JOptionPane.showMessageDialog(new JFrame(), ex.getCause());
        }
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        headerPanel = new javax.swing.JPanel();
        headerLabel = new javax.swing.JLabel();
        menuPanel = new javax.swing.JPanel();
        importButton = new javax.swing.JButton();
        modifyButton = new javax.swing.JButton();
        deleteButton = new javax.swing.JButton();
        backButton = new javax.swing.JButton();
        dataPanel = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        delButton = new javax.swing.JButton();
        clearButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(handax.HandaxApp.class).getContext().getResourceMap(deleteRes.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setName("Form"); // NOI18N
        setResizable(false);

        headerPanel.setName("headerPanel"); // NOI18N

        headerLabel.setIcon(resourceMap.getIcon("headerLabel.icon")); // NOI18N
        headerLabel.setText(resourceMap.getString("headerLabel.text")); // NOI18N
        headerLabel.setName("headerLabel"); // NOI18N

        javax.swing.GroupLayout headerPanelLayout = new javax.swing.GroupLayout(headerPanel);
        headerPanel.setLayout(headerPanelLayout);
        headerPanelLayout.setHorizontalGroup(
            headerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(headerPanelLayout.createSequentialGroup()
                .addComponent(headerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 701, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        headerPanelLayout.setVerticalGroup(
            headerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(headerPanelLayout.createSequentialGroup()
                .addComponent(headerLabel)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        menuPanel.setBackground(resourceMap.getColor("menuPanel.background")); // NOI18N
        menuPanel.setName("menuPanel"); // NOI18N

        importButton.setText(resourceMap.getString("importButton.text")); // NOI18N
        importButton.setName("importButton"); // NOI18N

        modifyButton.setText(resourceMap.getString("modifyButton.text")); // NOI18N
        modifyButton.setName("modifyButton"); // NOI18N

        deleteButton.setText(resourceMap.getString("deleteButton.text")); // NOI18N
        deleteButton.setName("deleteButton"); // NOI18N

        backButton.setText(resourceMap.getString("backButton.text")); // NOI18N
        backButton.setName("backButton"); // NOI18N
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout menuPanelLayout = new javax.swing.GroupLayout(menuPanel);
        menuPanel.setLayout(menuPanelLayout);
        menuPanelLayout.setHorizontalGroup(
            menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(menuPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(modifyButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(importButton, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE)
                    .addComponent(deleteButton, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE)
                    .addComponent(backButton, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE))
                .addContainerGap())
        );
        menuPanelLayout.setVerticalGroup(
            menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(menuPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(importButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(modifyButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(deleteButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(backButton)
                .addContainerGap(349, Short.MAX_VALUE))
        );

        dataPanel.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        dataPanel.setName("dataPanel"); // NOI18N

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane1.setViewportView(jTable1);

        delButton.setText(resourceMap.getString("delButton.text")); // NOI18N
        delButton.setName("delButton"); // NOI18N
        delButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                delButtonActionPerformed(evt);
            }
        });

        clearButton.setText(resourceMap.getString("clearButton.text")); // NOI18N
        clearButton.setName("clearButton"); // NOI18N
        clearButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clearButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout dataPanelLayout = new javax.swing.GroupLayout(dataPanel);
        dataPanel.setLayout(dataPanelLayout);
        dataPanelLayout.setHorizontalGroup(
            dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dataPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 689, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dataPanelLayout.createSequentialGroup()
                .addGap(197, 197, 197)
                .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(delButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE)
                    .addComponent(clearButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE))
                .addGap(197, 197, 197))
            .addGroup(dataPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 689, Short.MAX_VALUE)
                .addContainerGap())
        );
        dataPanelLayout.setVerticalGroup(
            dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dataPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 294, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(clearButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(delButton)
                .addContainerGap(31, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(headerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(layout.createSequentialGroup()
                .addComponent(menuPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(dataPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(headerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(dataPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addComponent(menuPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed
        
        //επανεμφάνιση αρχικού παραθύρου
        root.setVisible(true);
        
        //κατέστρεψε το παράθυρο εισαγωγής
        dispose();
    }//GEN-LAST:event_backButtonActionPerformed

    private void delButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delButtonActionPerformed
        
        //έλεγχος αν έχει επιλεχθεί εστιατόριο
        //Αν δεν έχει επιλεχθεί τότε πετάει μήνυμα
        if(jTable1.getSelectedRow()==-1){
            //Προτρεπτικό μήνυμα
            JOptionPane.showMessageDialog(new JFrame(), "Πρέπει να επιλέξετε ένα εστιατόριο προς διαγραφή");
        }
        
            //Αν έχει επιλεχθεί εστιατόριο
            if(jTable1.getSelectedRow()!=-1){
                
                //Μήνυμα επιβεβαίωσης διαγραφής
                int result =JOptionPane.showConfirmDialog(new JFrame(),"Επιβεβαίωση διαγραφής?",
                                                                   "",
                                                                   JOptionPane.YES_NO_OPTION);
            
                 //Αν επιλέξει ΝΑΙ
                 if (result==JOptionPane.YES_OPTION){
            
                     //Αφαίρεση του εστιατορίου από τηνν Βάση καλώντας
                    //την σχετική μέθοδο της DBManager με όρισμα το επιλεγμένο εστιατόριο
                    db.removeRestaurant(db.retrieveAllRests().get(jTable1.getSelectedRow()));
            
                    //εκτέλεση της μεθόδου insertRows για να εμφανιστούν τα αποτελέσματα
                    //στον πίνακα
                    insertRows();
                }
        }
    }//GEN-LAST:event_delButtonActionPerformed

    private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearButtonActionPerformed
            
            //Καθαρισμός επιλεγμένης σειράς    
            jTable1.clearSelection();
            
    }//GEN-LAST:event_clearButtonActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(deleteRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(deleteRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(deleteRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(deleteRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new deleteRes().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton backButton;
    private javax.swing.JButton clearButton;
    private javax.swing.JPanel dataPanel;
    private javax.swing.JButton delButton;
    private javax.swing.JButton deleteButton;
    private javax.swing.JLabel headerLabel;
    private javax.swing.JPanel headerPanel;
    private javax.swing.JButton importButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JPanel menuPanel;
    private javax.swing.JButton modifyButton;
    // End of variables declaration//GEN-END:variables
}
